// 定义公用方法

/* 得到安卓传参数方法    */
function getPram(id){
    localStorage.setItem("id",id);
}

/*
 * 功率折线图公用方法
 * 参数 : id name(标题和series.name公用) unit data 
 * */

function DrawLine(id, name, unit) {
	this.myChart = echarts.init(document.getElementById(id));
	this.name = name;
	this.unit = unit;
	this.powerX = this.createAxis();

	this.myOption = {
		grid: {
			bottom: '10%',
			left: '15%'
		},
		title: {
			text: this.name,
			left: '3%',
			top: '2%',
			textStyle: {
				color: '#fefefe',
				fontSize: 16
			}
		},
		tooltip: {
			trigger: 'axis'
		},
		xAxis: {
			name: '/h',
			//间距
			//nameGap: 3,
			type: 'category',
			data: this.powerX,
			axisLine: {
				lineStyle: {
					//x轴的坐标轴颜色
					color: '#fefefe'
				}
			},
			nameTextStyle: {
				//x轴的标题颜色
				color: '#fefefe',
				fontWeight: 'bold',
				fontSize: 14
			},
			// axisLabel: {
			// 	interval: 5
			// },
			// axisTick: {
			// 	interval: 5
			// }

		},
		yAxis: {
			name: this.unit,
			type: 'value',
			splitLine: {
				//显示y轴的分割线
				lineStyle: {
					//y轴的分割线颜色    
					color: 'rgba(185,213,255,0.4)'
				}
			},
			axisLine: {
				lineStyle: {
					//y轴的坐标轴颜色
					color: '#fefefe'
				}
			},
			nameTextStyle: {
				//y轴标题的颜色
				color: '#fefefe'
			}
		},
		visualMap: {
			color: '#ff9933',
			top: 10,
			right: 10,
			itemWidth: 0,
			itemHeight: 0
		},
		series: {
			name: this.name,
			boundaryGap: false,
			type: 'line',
			smooth: true,
			data: []
		}
	}

} //DrawLine(id,name,unit)

DrawLine.prototype.createAxis = function() {
	var arr = [];
	var s;
	for(var i = 0; i < 24; i++) {
		for(var j = 0; j < 6; j++) {
			if(j == 0) {
				s = String(i);
			} else {
				s = i + ':' + j + '0';
			}
			arr.push(s);
		}
	}
	return arr;
};

DrawLine.prototype.init = function() {
	this.myChart.setOption(this.myOption);
};

DrawLine.prototype.reDraw = function(reData) {
	this.myChart.setOption({
		type: 'restore',
		series: {
			name: this.name,
			type: 'line',
			data: reData
		}
	});
};

DrawLine.prototype.destroy = function() {
	this.myChart.clear();
};
// ================ 功率折线图方法结束    ===================

/*
 * 发电量柱图公用方法
 * 参数 : id name(标题和series.name公用) unit data 
 * */

function DrawBar(id, name, xUnit, yUnit) {
	this.myChart = echarts.init(document.getElementById(id));
	this.name = name;
	this.xUnit = xUnit;
	this.yUnit = yUnit;
	this.myOption = {
		title: {
			text: this.name,
			left: '3%',
			top: '2%',
			textStyle: {
				color: '#fefefe',
				fontSize: 16
			}
		},
		tooltip: {
			trigger: 'axis'
		},
		grid: {
			bottom: '10%',
			left: '15%'
		},
		xAxis: {
			name: this.xUnit,
			data: [],
			axisLine: {
				lineStyle: {
					//x轴的坐标轴颜色
					color: '#fefefe'
				}
			},
			nameTextStyle: {
				//x轴的标题颜色
				color: '#fefefe',
				fontWeight: 'bold',
				fontSize: 14
			}
		},
		yAxis: {
			type: 'value',
			name: this.yUnit,
			splitLine: {
				//显示y轴的分割线
				lineStyle: {
					//y轴的分割线颜色
					color: 'rgba(185,213,255,0.4)'
				}
			},
			axisLine: {
				lineStyle: {
					//y轴的坐标轴颜色
					color: '#fefefe'
				}
			},
			nameTextStyle: {
				//y轴标题的颜色
				color: '#fefefe'
			}
		},
		series: [{
			name: this.name,
			type: 'bar',
			data: [],
			itemStyle: {
				normal: {
					color: new echarts.graphic.LinearGradient(
						0, 0, 0, 1, [{
							offset: 0,
							color: '#6ce7f6'
						}, {
							offset: 0.5,
							color: '#2bb6f6'
						}, {
							offset: 1,
							color: '#0c76f6'
						}]
					)
				}
			}
		}]
	}
} //DrawBar(id,name,unit)

DrawBar.prototype.init = function() {
	this.myChart.setOption(this.myOption);
};

DrawBar.prototype.reDraw = function(xAxisData, reData) {
	this.myChart.setOption({
		type: 'restore',
		xAxis: {
			data: xAxisData
		},
		series: {
			name: this.name,
			type: 'bar',
			data: reData
		}
	});
};

DrawBar.prototype.destroy = function() {
	this.myChart.clear();
};
// ================ 发电量柱图方法结束    ===================

/*
 * 指针图公用方法
 * 参数 : id name(标题和series.name公用) unit data 
 * */

function DrawGauge(id, smallName, smallUnit, bigName, bigUnit) {
	this.myChart = echarts.init(document.getElementById(id));
	this.smallName = smallName;
	this.smallUnit = smallUnit;
	this.bigName = bigName;
	this.bigUnit = bigUnit;
	this.myOption = {
		title: {
			text: this.smallName + '/' + this.bigName,
			left: '3%',
			top: '2%',
			textStyle: {
				color: '#fefefe',
				fontSize: 16
			}
		},
		tooltip: {
			formatter: "{a} <br/>{c} {b}"
		},
		series: [{
			name: this.smallName,
			type: 'gauge',
			center: ['25%', '65%'], // 默认全局居中
			radius: '70%',
			min: 0,
			max: 100,
			endAngle: 45,
			splitNumber: 5,
			axisLine: { // 坐标轴线
				lineStyle: { // 属性lineStyle控制线条样式
					color: [
						[0.29, 'lime'],
						[0.86, '#1e90ff'],
						[1, '#ff4500']
					],
					width: 2,
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			axisLabel: { // 坐标轴小标记
				textStyle: { // 属性lineStyle控制线条样式
					fontWeight: 'bolder',
					color: '#fff',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			axisTick: { // 坐标轴小标记
				length: 8, // 属性length控制线长
				lineStyle: { // 属性lineStyle控制线条样式
					color: 'auto',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			splitLine: { // 分隔线
				length: 10, // 属性length控制线长
				lineStyle: { // 属性lineStyle（详见lineStyle）控制线条样式
					width: 3,
					color: '#fff',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			pointer: {
				width: 2,
				shadowColor: '#fff', //默认透明
				shadowBlur: 5
			},
			title: {
				offsetCenter: [0, '-20%'], // x, y，单位px
				textStyle: { // 其余属性默认使用全局文本样式，详见TEXTSTYLE
					fontWeight: 'bolder',
					fontStyle: 'italic',
					fontSize: 12,
					color: '#fff',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			detail: {
				borderColor: '#fff',
				shadowColor: '#fff', //默认透明
				shadowBlur: 5,
				offsetCenter: [10, '30%'], // x, y，单位px
				textStyle: { // 其余属性默认使用全局文本样式，详见TEXTSTYLE
					fontWeight: 'bolder',
					color: 'aqua',
					fontSize: 22
				}
			},
			data: [{
				value: 0,
				name: this.smallUnit
			}]
		}, {
			name: this.bigName,
			type: 'gauge',
			center: ['65%', '58%'],
			min: 0,
			max: 6,
			splitNumber: 6,
			radius: '90%',
			axisLine: { // 坐标轴线
				lineStyle: { // 属性lineStyle控制线条样式
					color: [
						[0.09, 'lime'],
						[0.82, '#1e90ff'],
						[1, '#ff4500']
					],
					width: 2,
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			axisLabel: { // 坐标轴小标记
				textStyle: { // 属性lineStyle控制线条样式
					fontWeight: 'bolder',
					color: '#fff',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			axisTick: { // 坐标轴小标记
				length: 8, // 属性length控制线长
				lineStyle: { // 属性lineStyle控制线条样式
					color: 'auto',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			splitLine: { // 分隔线
				length: 10, // 属性length控制线长
				lineStyle: { // 属性lineStyle（详见lineStyle）控制线条样式
					width: 3,
					color: '#fff',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			pointer: { // 分隔线
				width: 3,
				shadowColor: '#fff', //默认透明
				shadowBlur: 5
			},
			title: {
				offsetCenter: [0, '-20%'], // x, y，单位px
				textStyle: { // 其余属性默认使用全局文本样式，详见TEXTSTYLE
					fontWeight: 'bolder',
					fontSize: 12,
					fontStyle: 'italic',
					color: '#fff',
					shadowColor: '#fff', //默认透明
					shadowBlur: 5
				}
			},
			detail: {
				borderColor: '#fff',
				shadowColor: '#fff', //默认透明
				shadowBlur: 5,
				offsetCenter: [0, '30%'], // x, y，单位px
				textStyle: { // 其余属性默认使用全局文本样式，详见TEXTSTYLE
					fontWeight: 'bolder',
					color: 'aqua',
					fontSize: 22
				}
			},
			data: [{
				value: 0,
				name: this.bigUnit
			}]
		}]
	}
}

DrawGauge.prototype.init = function() {
	this.myChart.setOption(this.myOption);
};

DrawGauge.prototype.reDraw = function(smallData, bigData, bigMax) {
	this.myChart.setOption({
		type: 'restore',
		series: [{
			name: this.smallName,
			type: 'gauge',
			data: [{
				value: smallData,
				name: this.smallUnit
			}]

		}, {
			name: this.bigName,
            max: bigMax,
			type: 'gauge',
			data: [{
				value: bigData,
				name: this.bigUnit
			}]

		}]
	});
};

DrawGauge.prototype.destroy = function() {
	this.myChart.clear();
};
// ================ 指针图方法结束    ===================

/* 接口公用前部分    */
function getUrl(){
	return 'http://192.168.1.91:8088/reesola';
}

//对Date的扩展，将 Date 转化为指定格式的String
//月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
//年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
//例子： 
//(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
//(new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.Format = function (fmt) { //author: meizz 
	var o = {
	 "M+": this.getMonth() + 1, //月份 
	 "d+": this.getDate(), //日 
	 "h+": this.getHours(), //小时 
	 "m+": this.getMinutes(), //分 
	 "s+": this.getSeconds(), //秒 
	 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
	 "S": this.getMilliseconds() //毫秒 
	};
	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o)
	  if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
	    return fmt;
};



//定时器方法
function Alarm(aFunc, intervalTime,flag) {
    this.aFunc = aFunc; //计时函数
    this.intervalTime = intervalTime; //间隔时间
    this.flag = "t" + Date.parse(new Date());  //计时器变量
}

Alarm.prototype = {
    _start:function(){
        var self = this;
        self.flag = setInterval(this.aFunc,this.intervalTime);

    },
    _remove:function(){
        clearInterval(self.flag);
    }
};


// 得到每月天数
function getMonthDays(date){
	var year = date.split("-")[0];
	var month = date.split("-")[1];
    month = parseInt(month,10); //parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话，默认是10进制。
    var temp = new Date(year,month,0);
    return temp.getDate();
}



//生成一个空数组
function createEmptyArr(count){
	 var array = new Array(count);
	 for(var i=0;i<array.length;i++){
		 array[i]=null;
	 }
	 return array;
}

//生成   月份/年份  X轴   数组
function createXArray(count){
	var arr=new Array(count);
	for(var i = 0;i < count;i++){
		arr[i] = i+1;
	}
	return arr;
}


//根据除数取整被除数
function setCeilInt(num,interval){
    num = Math.ceil(num+num*0.1); // 向上取整到110%大小
    if(num % interval != 0){ // 不能整除情况
        num = num + interval-(num % interval);
    }
    return num;
}

